// #include <iostream>

#include "Thread.h"
#include <unordered_map>
#include <memory>

#define NUM 4
// using thread_ptr_t = std::shared_ptr<lll::Thread>;

void Count(int x)
{
    for (int i = 0; i < x; i++)
    {
        std::cout << "i == " << i << std::endl;
        sleep(1);
    }
}
int main()
{
    lll::Thread<int> t(Count, 10);
    t.Start();
    t.Join();
    // std::unordered_map<std::string, thread_ptr_t> threads;

    // for (int i = 0; i < NUM; i++)
    // {
    //     thread_ptr_t t = std::make_shared<lll::Thread>([]
    //                                                    {
    //         while (true)
    //         {
    //             std::cout << "hello world" << std::endl;
    //             sleep(1);
    //         } });
    //     threads[t->Name()] = t;
    // }
    // for (auto &e : threads)
    // {
    //     e.second->Start();
    // }
    // for (auto &s : threads)
    // {
    //     s.second->Join();
    // }

    // lll::Thread t([]()
    //               {
    //     while(true)
    //     {
    //         std::cout<<"hello world"<<std::endl;
    //         sleep(1);
    //     }; });
    // t.Start();
    // std::cout << t.Name() << "is runing:" << std::endl;
    // sleep(5);

    // t.Stop();
    // std::cout << t.Name() << "is stop:" << std::endl;

    // sleep(1);
    // t.Join();
    // std::cout << t.Name() << "is join:" << std::endl;

    return 0;
}